package equipos;

import java.util.HashSet;
import java.util.Set;

import jugadores.Jugador;
import jugadores.Posicion;

public class Equipo implements Nombrable {
    /* VARIABLES DE INSTANCIA */
    private Tecnico tecnico;

    private Set<Jugador> jugadores;

    private String nombre;

    /* CONSTRUCTOR */
    public Equipo(final String nombre, final Tecnico tecnico) {
        this.nombre = nombre;
        this.tecnico = tecnico;
        this.jugadores = new HashSet<Jugador>();
    }

    /* METODOS */
    public Jugador mejorJugador(final Posicion p) {
        Jugador mejorJugador = null;
        for (Jugador j : this.jugadores) {
            if (mejorJugador == null || mejorJugador.getValor(p) < j.getValor(p)) {
                mejorJugador = j;
            }
        }
        return mejorJugador;
    }

    public void removerJugador(final Jugador j) {
        this.jugadores.remove(j);
    }

    public void agregarJugador(final Jugador j) {
        this.jugadores.add(j);
    }

    public Formacion armarFormacion() {
        return this.tecnico.armarFormacion(this);
    }

    /* GETTERS & SETTERS */
    public String getNombre() {
        return this.nombre;
    }

    public void setNombre(final String nombre) {
        this.nombre = nombre;
    }

    public Tecnico getTecnico() {
        return this.tecnico;
    }

    public void setTecnico(final Tecnico tecnico) {
        this.tecnico = tecnico;
    }

    public Set<Jugador> getJugadores() {
        return this.jugadores;
    }

    public void setJugadores(final Set<Jugador> jugadores) {
        this.jugadores = jugadores;
    }
}
